/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package jpi1208a;

import java.util.*;

/**
 *
 * @author VANDH
 */
// Tạo class Animal <- Dog, Bird, Chicken
// Animal có thông tin chung, phương thức, phương thức abstract
// Animal : phương thức trả về số Chân -> abstract
// phương thức bietBay trả về kiểu boolean -> abstract
// phương thức bietBoi trả về kiểu boolean -> abstract
// phương thức bietKeu trả về kiểu boolean -> abstract
// phương thức show ra tiếng kêu -> abstract
// Dog : lưu trữ và get, set được màu lông
// lưu trữ và get, set được tên giống
//
// Bird : lưu và get, set được món ăn riêng của loài
// lưu và get set được đây là loài di trú hay là cố định
//
// Chicken : có thuộc tính giống gà
// có thuộc tính gà đá hay ăn thịt
public class JPI1208A {

    // VCT tính tổng tiền 1 hóa đơn mua quần áo
    // mỗi cái áo có giá 100k
    // mỗi cái quần có giá 200k
    // cho phép nhập vô số lượng áo, quần
    // in ra tổng tiền
    // Quy tắc tên hàm trong java, mọi hàm đều viết thường chữ đầu
    // tên hàm là một động từ
    // VD : tatCaiDen
    // Tên biến cũng viết thường kí tự đầu, nhưng là một danh từ
    public static void main(String[] args) {
        int choice;
        ArrayDemo ad = new ArrayDemo();
        do {
            System.out.println("1. Tính hóa đơn");
            System.out.println("2. Tính biểu thức");
            System.out.println("3. Tạo sinh viên");
            System.out.println("4. Nhập vô mảng nguyên");
            System.out.println("5. In mảng nguyên");
            System.out.println("6. Tạo sinh viên ACCP");
            System.out.println("7. Tạo Ellipse");
            System.out.println("8. Tạo 3 con vật");
            System.out.println("9. Thoát");
            System.out.println("Chọn chức năng số mấy? : ");
            Scanner keyboard = new Scanner(System.in);
            choice = keyboard.nextInt();

            switch (choice) {
                case 1:
                    tinhHoaDon();
                    break;
                case 2:
                    tinhBieuThuc();
                    break;
                case 3:
                    // s là object kiểu Student
                    // hay còn gọi là thể hiện của class Student
                    Student s = new Student();
                    // s reference tới một object Student
                    // s là object Student
                    s.setFullName("Nguyen Van A");
                    s.setAddress("321 Tran Hung Dao");
                    s.setBirthDay("1/1/1991");
                    s.setCourseName("ACCP1208A");
                    s.setRollNumber("ACCP1208A_001");
                    System.out.println(s.fullName);
                    s.setMarks(1, 1);
                    s.setMarks(2, 3);
                    s.setMarks(3, 4);

                    s.showMarks();
                    s.averageMark();
                    break;
                case 4:
                    ad.inputArray();
                    break;
                case 5:
                    ad.outputArray();

                    break;
                case 6:
                    StudentAccp sa = new StudentAccp();
                    System.out.println(sa.semNumber);

                    break;
                case 7:
                    Ellipse e = new Ellipse();
                    e.setR(3);  // kế thừa từ Circle mà ra
                    e.setRy(4);
                    System.out.println(e.tinhChuVi());

                    Circle c = e;   // e là object Ellipse
                    System.out.println(c.tinhChuVi());
                    break;
                case 8:
                    Dog d = new Dog();
                    if (d.bietKeu()) {
                        d.keu();
                    }

                    Bird b = new Bird();
                    if (b.bietKeu()) {
                        b.keu();
                    }

                    Chicken ch = new Chicken();
                    if (ch.bietKeu()) {
                        ch.keu();
                    }

                    Animal[] animals = new Animal[2];
                    animals[0] = new Dog();
                    animals[1] = new Chicken();

                    for (int i = 0; i < animals.length; i++) {
                        if (animals[i].bietKeu()) {
                            if (animals[i] instanceof Dog) {
                                ((Dog) animals[i]).keu();
                            } else if (animals[i] instanceof Bird) {
                                ((Bird) animals[i]).keu();
                            } else if (animals[i] instanceof Chicken) {
                                ((Chicken) animals[i]).keu();
                            }
                        }
                    }

                    System.out.println("Số lượng con vật tạo :" + d.getSoLuong());

                    ShapeInterface si = new ShapeInterface() {
                        @Override
                        public void showInfo() {
                            System.out.println("showInfo of Anonymous class running..");
                        }
                    };
                    si.showInfo();
                    break;
            }
        } while (choice != 9);

    }

    private static void tinhHoaDon() {
        int giaAo = 100000, giaQuan = 200000;
        //double i = (double) 5 / 3;

        //System.out.println(i);
        // khai báo biến keyboard hỗ trợ đọc dữ liệu từ bàn phím
        // System.in -> biến đại diện cho bàn phím
        // System.out -> biến đại diện cho màn hình
        Scanner keyboard = new Scanner(System.in);
        System.out.printf("Nhập vào số áo : ");
        int soLuongAo = keyboard.nextInt();
        System.out.printf("Nhập vào số quần : ");

        int soLuongQuan = keyboard.nextInt();
        int tongTien = giaAo * soLuongAo + giaQuan * soLuongQuan;

        System.out.printf("Tổng tiền : %d", tongTien);
    }

    private static void tinhBieuThuc() {
        // Cho nhập vô n
        // Tính S = 1/(0+2) + 1/(2+3) + 1/(2+3+4) + ... +1/(2+..+n)
        // In ra S
        int n = 10;
        double S = 0;
        int mauSo = 0;
        for (int i = 2; i <= n; i++) {
            mauSo += i;
            S = S + (1.0 / mauSo); // Làm sao ra được cái biểu thức nhỏ bên trong?;
        }
        System.out.printf("S=%f\n", S);
    }
}
